Ext.define('aps.administrarItemPanel', {
    extend: 'Ext.form.Panel',
    alias : 'aps.administrarItemPanel',

    title :   'Administrar Item',
    id:       'panel_administrar_item',
    name:     'panel_administrar_item',
    layout:   'fit',
    frame:    true,
    closable: true,
    border:   false,
  
    initComponent: function() {
        var grid_items = Ext.create('aps.itemGrid');
        grid_items.store.load({
            params : {
                idfase : Ext.getCmp('combo-fase').valueModels[0].data.idfase
            }
        });
        this.items = [{
            xtype:      'form',
            title:      'Administrar Item',
            autoScroll: true,
            fieldDefaults: {
                blankText:     'Este campo no puede ser nulo',
                msgTarget:     'side',
                autoFitErrors: false
            },
            items: [{
                xtype:       'combo',
                margin:      '50 20 20 20',
                fieldLabel:  '<b>Buscar por</b>', 
                hiddenName:  'campo',  
                name:        'campo',
                editable:     false,
                mode:        'local',
                width:        480,
                labelWidth:   150,
                allowBlank:   false,
                displayField: 'opcion',
                valueField:   'campo',
                emptyText :   'Seleccione un campo', 
                store: new Ext.data.SimpleStore({  
                    id      : 0 ,  
                    fields  : ['id', 'opcion', 'campo'],  
                    data    : [
                        [1, 'Nombre del Item', 'nombre'],
                        [2, 'Descripcion', 'descripcion'],
                        [3, 'Version', 'version'],
                        [4, 'Prioridad', 'prioridad'],
                        [5, 'Complejidad', 'complejidad'],
                        [6, 'Estado', 'estado'],
                        [7, 'Numeracion', 'numfase']
                    ]
                }),   
            }, {
                xtype:      'textfield',
                margin:     '5 20 20 20',
                name :      'igual',
                labelWidth:  150,
                width: 480,                
                fieldLabel: '<b>Igual a</b>',
                allowBlank: false
            },{
                xtype: 'button',
                text:  'Buscar',    
                x: 520,
                y: -42,
                iconCls: 'search-icon',
                handler:  this.form_buscar_handler            
            },
            grid_items
            ]
        }];
        
        this.buttons = {
            height: 50,
            layout: {
                type: 'table',
                align: 'stretch',
                columns: 7
            },
            defaults: {minWidth: 100},
            items : [{
                text:    'Impacto',
                id:      'calculo_item_btn',
                iconCls: 'impacto-icon',
                hidden:  true,
                grid:    grid_items,
                handler: this.form_calcular_handler
            },{
                text:    'Terminar item',
                id:      'terminar_item_btn',
                iconCls: 'end-icon',
                hidden:  true,
                grid:    grid_items,
                handler: this.form_terminar_handler
            },{    
                text:    'Aprobar item',
                id:      'aprobar_item_btn',
                iconCls: 'ok-icon',
                hidden:  true,
                grid:    grid_items,
                handler: this.form_aprobar_handler
            },{    
                text:    'Desaprobar item',
                id:      'desaprobar_item_btn',
                iconCls: 'cancel-icon',
                hidden:  true,
                grid:    grid_items,
                handler: this.form_desaprobar_handler
            },{    
                text:    'Revertir',
                id:      'revertir_item_btn',
                iconCls: 'revertir-icon',
                hidden:  true,
                grid:    grid_items,
                handler: this.form_revertir_handler
            }, {
                text:    'Revivir',
                id:      'revivir_item_btn',
                iconCls: 'revivir-icon',
                grid:    grid_items,
                hidden:  true,
                handler: this.form_revivir_handler            
            }, {
                text:    'Relacionar',
                id:      'relacionar_item_btn',
                iconCls: 'relate-icon',
                hidden:  true,
                grid:    grid_items,
                handler: this.form_relate_handler
            }, {
                text:    'Desrelacionar',
                id:      'desrelacionar_item_btn',
                iconCls: 'unrelate-icon',
                hidden:  true,
                grid:    grid_items,
                handler: this.form_unrelate_handler
            }, {
                
                text:    'Modificar',
                id:      'modificar_item_btn',
                iconCls: 'update-icon',
                hidden:  true,
                grid:    grid_items,
                handler: this.form_update_handler
            }, {
                text:    'Eliminar',
                id:      'eliminar_item_btn',
                iconCls: 'delete-icon',
                hidden:  true,
                grid:    grid_items,
                handler: this.form_delete_handler
            }, {
                text:    'Nuevo',
                id:      'nuevo_item_btn',
                iconCls: 'new-icon',
                hidden:  true,
                handler: this.form_new_handler
            }, {
                text:    'Cancelar',
                id:      'cancelar_item_btn',
                iconCls: 'cancel-icon',
                handler: this.form_cancel_handler
            }, {
                text:    'Limpiar',
                id:      'limpiar_item_btn',
                iconCls: 'clear-icon',
                handler: this.form_reset_handler
            },{
                text:    'Ver Relaciones',
                id:      'ver_relaciones_item_btn',
                iconCls: 'verrelaciones-icon',
                hidden:  true,
                grid:    grid_items,
                handler: this.form_ver_relaciones_handler
            }]
        };
        
        this.listeners = {
            close : function() {
                // cerramos los paneles hijos abiertos (si hubiere)
               Ext.getCmp('area-central').cerrar_pestanhas([
                    'panel_modificar_item',
                    'panel_crear_item',
                    'panel_revivir_item',
                    'panel_revertir_item'
                ]);
            },
            render : function(){
                // mostramos los botones segun los permisos
                var fun = Ext.getCmp('funcionalidades');
                if(fun.existe_permiso('cr:it')){
                    Ext.getCmp('nuevo_item_btn').setVisible(true);
                }
                if(fun.existe_permiso('mo:it')){
                    Ext.getCmp('modificar_item_btn').setVisible(true);
                }
                if(fun.existe_permiso('el:it')){
                    Ext.getCmp('eliminar_item_btn').setVisible(true);
                }
                if(fun.existe_permiso('cr:rl')){
                    Ext.getCmp('relacionar_item_btn').setVisible(true);
                }
                if(fun.existe_permiso('el:rl')){
                    Ext.getCmp('desrelacionar_item_btn').setVisible(true);
                }
                if(fun.existe_permiso('re:it')){
                    Ext.getCmp('revertir_item_btn').setVisible(true);
                }
                if(fun.existe_permiso('rv:it')){
                    Ext.getCmp('revivir_item_btn').setVisible(true);
                }
                if(fun.existe_permiso('ap:it')){
                    Ext.getCmp('aprobar_item_btn').setVisible(true);
                    Ext.getCmp('desaprobar_item_btn').setVisible(true);
                }
                if(fun.existe_permiso('te:it')){
                    Ext.getCmp('terminar_item_btn').setVisible(true);
                }
                if(fun.existe_permiso('ci:it')){
                    Ext.getCmp('calculo_item_btn').setVisible(true);
                }
                if(fun.existe_permiso('el:rl')){
                    Ext.getCmp('ver_relaciones_item_btn').setVisible(true);
                }
            }
        };
        this.callParent(arguments);
    },
    
    form_relate_handler : function() {
        var grid    = this.grid;
        var records = this.grid.getSelectionModel().getSelection();
        if(records == null || records.length == 0){
            Ext.Msg.alert('ERROR','Debe seleccionar un item para relacionar');
        }
        else if(records[0].data.estado != 'ACTIVO'){
               Ext.Msg.alert('ERROR','No se puede crear una relacion porque el item no esta ACTIVO');
        }
        else{
            var id_item     = records[0].data.id;
            var id_proyecto = Ext.getCmp('combo-proyecto').valueModels[0].data.idproyecto;
            var panel       = Ext.create('aps.relacionarItemPanel');
            // Llenamos los datos iniciales para relacionar un item
            panel.items.getAt(0).setValue(id_item);
            panel.items.getAt(1).setValue(id_proyecto);
            // Mostramos la interfaz de relaciones
            var win = Ext.create('Ext.Window',{
                title:     'DATOS',
                height:    160,
                width:     480,
                modal:     true,
                frame:     false,
                border:    false,
                resizable: false,
                items:     [panel],
                buttons: [{
                    xtype:  'button',
                    text:   'Aceptar',
                    handler: function(){
                        // Datos necesarios para crear la relacion
                        var id_destino = id_item;
                        var id_origen  = Ext.getCmp('combo_item_origen').getValue();
                        var tipo       = Ext.getCmp('combo_tipo_relacion').getValue();
                        if(id_origen == null || id_origen == ''){
                            Ext.Msg.alert('ERROR','Debe seleccionar un item de origen');
                        }
                        else{
                            // Enviamos la peticion al servidor para crear la relacion
                            Ext.Ajax.request({
                                url:      '/crear_relacion',
                                method:   'POST',
                                params: {
                                    origen:  id_origen,
                                    destino: id_destino,
                                    tipo:    tipo
                                },
                                success: function(response, opts) {
                                    var obj = Ext.JSON.decode(response.responseText);
                                    if(obj.success){
                                        Ext.Msg.alert('INFO','Relacion creada con exito!');
                                        // Actualizamos el grid de items
                                        grid.store.load({
                                            params : {
                                                idfase : Ext.getCmp('combo-fase').valueModels[0].data.idfase
                                            }
                                        });
                                    } else {
                                        Ext.Msg.alert('ERROR',obj.message);
                                    }
                                }
                            });
                            win.close();
                        }
                    }
                }]
            });
            win.show();
        }
    },
    
    form_unrelate_handler : function(){
        var records = this.grid.getSelectionModel().getSelection();
        if(records == null || records.length == 0){
            Ext.Msg.alert('ERROR','Debe seleccionar un item para desrelacionar');
        }
        else if(records[0].data.estado != 'ACTIVO'){
               Ext.Msg.alert('ERROR','No se puede eliminar la relacion porque el item no esta ACTIVO');
        }
        else{
            var id_item  = records[0].data.id;
            // Creamos el panel para desrelacionar un item
            var panel = Ext.create('aps.desrelacionarItemPanel');
            panel.items.getAt(0).setValue(id_item);
            panel.llenar_grid();
            // Agregamos el panel a una ventana
            var win = Ext.create('Ext.Window',{
                title:     'DATOS',
                height:    '70%',
                width:     '80%',
                modal:     true,
                frame:     false,
                border:    false,
                resizable: false,
                items:     [panel],
                buttons: [{
                    xtype: 'button',
                    text:  'Eliminar',
                    panel: panel,
                    handler: function(){
                        var grid    = this.panel.items.getAt(1);
                        var records = grid.getSelectionModel().getSelection();
                        if(records != null && records.length != 0){
                            Ext.Msg.show({
                                title:'INFO',
                                msg: 'Esta seguro que desea eliminar estas relaciones?',
                                buttons: Ext.Msg.YESNO,
                                fn: function(btn){
                                    if(btn == 'yes'){
                                        // Eliminamos la relacion
                                        Ext.Ajax.request({
                                            url:    '/eliminar_relacion',
                                            params: {
                                                origen:  records[0].data.idorigen,
                                                destino: records[0].data.iddestino,
                                                tipo:    records[0].data.tipo
                                            },
                                            success: function(response, opts) {
                                                Ext.Msg.alert('INFO','Relaciones eliminadas con exito');
                                                // recargamos el store
                                                grid.store.load({
                                                    params:{
                                                        iditem : id_item
                                                    }
                                                });
                                            },
                                            failure: function(response, opts) {
                                                Ext.Msg.alert('ERROR','Ocurrio un problema al eliminar las relaciones!');
                                            }
                                        });
                                    }
                                }
                            });
                        } else {
                            Ext.Msg.alert('ERROR','Debe seleccionar una relacion para eliminar');
                        }
                    }
                }]
            });
            win.show();
        }
    },
    
    form_delete_handler : function() {
        var records = this.grid.getSelectionModel().getSelection();
        if(records == null || records.length == 0){
            Ext.Msg.alert('ERROR','Debe seleccionar un registro para eliminar');
        }
        else if(records[0].data.estado == 'BLOQUEADO'){
               Ext.Msg.alert('ERROR','No se puede eliminar el item, ya pertenece a una linea base ');
        }
        else{
            var grid = this.grid;
            Ext.Msg.show({
                title:'INFO',
                msg: 'Esta seguro que desea eliminar este registro?',
                buttons: Ext.Msg.YESNO,
                fn: function(btn){
                    if(btn == 'yes'){
                        // ELIMINACION
                        Ext.Ajax.request({
                            url:    '/eliminar_item',
                            params: {id : records[0].data.id},
                            success: function(response, opts) {
                                // recargamos los datos
                                Ext.Msg.alert('INFO','Registro eliminado con exito');
                                grid.getStore().load({
                                    params : {
                                        idfase : Ext.getCmp('combo-fase').valueModels[0].data.idfase
                                    }
                                });
                            },
                            failure: function(response, opts) {
                                Ext.Msg.alert('ERROR','Ocurrio un problema al eliminar el registro!');
                            }
                        });
                    }
                }
            });
        }
    },
    
    form_update_handler : function() {
        var records = this.grid.getSelectionModel().getSelection();
        if(records == null || records.length == 0){
            Ext.Msg.alert('ERROR','Debe seleccionar un registro para modificar');
        }
        else if(records[0].data.estado == 'BLOQUEADO'){
               Ext.Msg.alert('ERROR','No se puede modificar el item, ya pertenece a una linea base ');
        }
        else if(records[0].data.estado == 'APROBADO'){
               Ext.Msg.alert('ERROR','No se puede modificar el item, ya esta aprobado');
        }
        else if(records[0].data.estado == 'PENDIENTE'){
               Ext.Msg.alert('ERROR','No se puede modificar el item, este item ya fue terminado ');
        }
        else{
            var id_item  = records[0].data.id;
            Ext.Ajax.request({
                url:      '/puede_modificar_item',
                method:   'POST',
                params: {
                	estado: records[0].data.estado,
                	id_item : id_item
                },
                success: function(response, opts) {

                	Ext.Ajax.request({
						url:      '/consultar_campos_modificar_item',
						method:   'POST',
						params: {id_item : id_item},
						success: function(response, opts) {
							// Obtenemos la respuesta del servidor
							var obj    = Ext.decode(response.responseText);
							var total  = obj.total;
							var data   = obj.data;
							var numfase = obj.numfase
							// Cerramos si ya existe un panel de modificacion
							var panel = Ext.getCmp('panel_modificar_item');
							if(panel != null){ panel.close(); }
							// Creamos un panel en blanco para generar los campos
							Ext.getCmp('area-central').agregar_pestanha('panel_modificar_item','aps.modificarItemPanel');
							panel = Ext.getCmp('panel_modificar_item');
							panel.setVisible(false);
							// Llenamos la informacion necesaria para modificar el item;
							panel.items.getAt(0).items.getAt(0).setValue(id_item);
							panel.items.getAt(0).items.getAt(1).setValue(numfase);
							// Procesamos los atributos del tipo item seleccionado
							panel.procesar_campos(total,data);
							// Mostramos la interfaz de modificacion para el item
							panel.setVisible(true);
							panel.doLayout();
						},
						failure: function(response, opts) {
							Ext.Msg.alert('ERROR','Ocurrio un problema al realizar los cambios');
							
						}
					});
			},
			failure: function(response, opts) {
				Ext.Msg.alert('ERROR','No es Dueño de la Solicitud Aprobada');
			}
		});
        }
    },
    form_revertir_handler: function(){
        var records = this.grid.getSelectionModel().getSelection();
        if(records == null || records.length == 0){
            Ext.Msg.alert('ERROR','Debe seleccionar un item a revertir');
        }
        else if(records[0].data.estado == 'BLOQUEADO'){
               Ext.Msg.alert('ERROR','No se puede revertir el item, ya pertenece a una linea base');
        }
        else if(records[0].data.estado == 'APROBADO'){
               Ext.Msg.alert('ERROR','No se puede revertir el item, ya esta aprobado');
        }
        else if(records[0].data.estado == 'PENDIENTE'){
               Ext.Msg.alert('ERROR','No se puede revertir el item, este item ya fue terminado');
        }
        else{
            var id_item  = records[0].data.id;
            Ext.getCmp('area-central').agregar_pestanha('panel_revertir_item','aps.revertirItemPanel');
            Ext.StoreMgr.lookup('itemStoreVersion').load({
                params: {
                    id_item: id_item,
                }
            }); 
        }
    },
    form_revivir_handler: function(){
            Ext.getCmp('area-central').agregar_pestanha('panel_revivir_item','aps.revivirItemPanel'); 
            Ext.data.StoreManager.lookup('itemStoreRevivir').load({
                params: {
                    idfase : Ext.getCmp('combo-fase').valueModels[0].data.idfase,
                }
            }); 
    },
    form_terminar_handler: function(){
        var records = this.grid.getSelectionModel().getSelection();
        if(records == null || records.length == 0){
            Ext.Msg.alert('ERROR','Debe seleccionar un item para finalizar');
        }
        else if(records[0].data.estado == 'PENDIENTE'){
            Ext.Msg.alert('INFO','El item ya ha sido finalizado');
        }
        else if(records[0].data.estado != 'ACTIVO' && records[0].data.estado != 'REVISION'){
               Ext.Msg.alert('ERROR','No se puede finalizar el item por su estado');
        }
        else{
            var grid = this.grid;            
            Ext.Msg.show({
                title:'INFO',
                msg: 'Esta seguro que desea finalizar este item?',
                buttons: Ext.Msg.YESNO,
                fn: function(btn){
                    if(btn == 'yes'){
                        // FINALIZACION
                        Ext.Ajax.request({
                            url:    '/terminar_item',
                            params: {id : records[0].data.id},
                            success: function(response, opts) {
                                // recargamos los datos
                                Ext.Msg.alert('INFO','Item Pendiente de Aprobacion');
                                grid.getStore().load({
                                    params : {
                                        idfase : Ext.getCmp('combo-fase').valueModels[0].data.idfase
                                    }
                                });
                            },
                            failure: function(response, opts) {
                                Ext.Msg.alert('ERROR','No se puede finalizar el item!');
                            }
                        });
                    }
                }
            });
        }
    },
    
    form_aprobar_handler: function(){
        var records = this.grid.getSelectionModel().getSelection();
        if(records == null || records.length == 0){
            Ext.Msg.alert('ERROR','Debe seleccionar un item a aprobar');
        }
        else if(records[0].data.estado == 'APROBADO'){
            Ext.Msg.alert('INFO','El item ya ha sido aprobado');
        }
        else if(records[0].data.estado != 'PENDIENTE' ){
               Ext.Msg.alert('ERROR','No se puede aprobar el item porque no esta en estado PENDIENTE(de aprobacion)');
        }
        else{
            var grid = this.grid;            
            Ext.Msg.show({
                title:'INFO',
                msg: 'Esta seguro que desea aprobar este item?',
                buttons: Ext.Msg.YESNO,
                fn: function(btn){
                    if(btn == 'yes'){
                        // APROBACION
                        Ext.Ajax.request({
                            url:    '/aprobar_item',
                            params: {id : records[0].data.id},
                            success: function(response, opts) {
                                var obj = Ext.JSON.decode(response.responseText);
                                if(obj.success){                                                      
                                    Ext.Msg.alert('INFO','Item Aprobado');
                                    Ext.StoreMgr.lookup('itemStore').load({
                                        params : {
                                            idfase : Ext.getCmp('combo-fase').valueModels[0].data.idfase
                                        }
                                    });
                                } 
                                else {
                                    Ext.Msg.alert('ERROR','El item no tiene ningun ancestro o su padre no esta aprobado');
                                }
                            },
                        });
                    }
                }
            });
        }
    },
    form_desaprobar_handler: function(){
        var records = this.grid.getSelectionModel().getSelection();
        if(records == null || records.length == 0){
            Ext.Msg.alert('ERROR','Debe seleccionar un item a desaprobar');
        }
        else if(records[0].data.estado == 'APROBADO'){
            Ext.Msg.alert('INFO','El item ya ha sido aprobado');
        }
        else if(records[0].data.estado != 'PENDIENTE' ){
               Ext.Msg.alert('ERROR','No se puede desaprobar el item porque no esta en estado PENDIENTE(de aprobacion)');
        }
        else{
            var grid = this.grid;            
            Ext.Msg.show({
                title:'INFO',
                msg: 'Esta seguro que desea desaprobar este item?',
                buttons: Ext.Msg.YESNO,
                fn: function(btn){
                    if(btn == 'yes'){
                        // APROBACION
                        Ext.Ajax.request({
                            url:    '/desaprobar_item',
                            params: {id : records[0].data.id},
                            success: function(response, opts) {
                                var obj = Ext.JSON.decode(response.responseText);
                                if(obj.success){                                                      
                                    Ext.Msg.alert('INFO','Item Desaprobado');
                                    Ext.StoreMgr.lookup('itemStore').load({
                                        params : {
                                            idfase : Ext.getCmp('combo-fase').valueModels[0].data.idfase
                                        }
                                    });
                                } 
                                else {
                                    Ext.Msg.alert('ERROR','El item no tiene ningun ancestro o su padre no esta aprobado');
                                }
                            },
                        });
                    }
                }
            });
        }
    },
    
    form_buscar_handler: function(){
        var form = this.up('form').getForm();
        var campo = form.findField('campo').getValue();
        var valor = form.findField('igual').getValue();
        if(valor == '' || campo == null){
            Ext.Msg.alert('ERROR','Los parametros de busqueda son ivalidos o estan incompletos');
        }
        else{
            Ext.StoreMgr.lookup('itemStore').load({
                params: {
                    idfase : Ext.getCmp('combo-fase').valueModels[0].data.idfase,
                    filtro : campo,
                    valor:   valor
                }
            });
        }
    },
    
    form_new_handler: function() {
        var panel = Ext.create('aps.crearItemParamsPanel');
        var win   = Ext.create('Ext.Window',{
            title:     'DATOS',
            height:    160,
            width:     480,
            modal:     true,
            frame:     false,
            border:    false,
            resizable: false,
            items:    [panel],
            buttons:  [{
                xtype: 'button',
                text:  'Aceptar',
                handler: function(){
                    var id_fase     = Ext.getCmp('combo-fase').valueModels[0].data.idfase;
                    var id_tipoitem = Ext.getCmp('combo_crear_tipoitem_en_fase').getValue();
                    if(id_tipoitem == null || id_tipoitem == ''){
                        Ext.Msg.alert('ERROR','No se ha seleccionado ningun tipo de item.');
                    }
                    else{
                        // creamos los campos de forma dinamica
                        Ext.Ajax.request({
                            url:      '/consultar_campos_crear_item',
                            method:   'POST',
                            params: {id_tipoitem : id_tipoitem},
                            success: function(response, opts) {
                                // Obtenemos la respuesta del servidor
                                var obj   = Ext.decode(response.responseText);
                                var total = obj.total;
                                var data  = obj.data;
                                // Creamos el form de acuerdo al tipo de item
                                Ext.getCmp('area-central').agregar_pestanha('panel_crear_item','aps.crearItemPanel')
                                var panel = Ext.getCmp('panel_crear_item');
                                panel.setVisible(false);
                                // Llenamos la informacion necesaria para asignar el item a una fase
                                panel.items.getAt(0).items.getAt(0).setValue(id_fase);
                                panel.items.getAt(0).items.getAt(1).setValue(id_tipoitem);
                                // Procesamos los atributos del tipo item seleccionado
                                panel.procesar_campos(total,data);
                                // Mostramos la interfaz de creacion para el tipo de item
                                panel.setVisible(true);
                                panel.doLayout();
                            },
                            failure: function(response, opts) {
                                Ext.Msg.alert('ERROR','Ocurrio un problema al realizar los cambios');
                            }
                        });
                        win.close();
                    }
                }
            }]
        });
        win.show();
    },
    
    form_reset_handler: function() {
        // limpiamos el formulario y hacemos foco en el primer campo
        var form = this.up('form').getForm();
        form.reset();
        form.findField('campo').focus(true,100);
        // recargamos el store
        Ext.data.StoreManager.lookup('itemStore').load({
            params : {
                idfase : Ext.getCmp('combo-fase').valueModels[0].data.idfase
            }
        });
    },
    
    form_cancel_handler: function() {
        this.up('panel').close();
    },
    
    form_calcular_handler : function() {
        var records = this.grid.getSelectionModel().getSelection();
        if(records == null || records.length == 0){
            Ext.Msg.alert('ERROR','Debe seleccionar un item para calcular su impacto');
        }
        else{
            var id_item  = records[0].data.id;
            // Realizamos el calculo
            Ext.Ajax.request({
                url:      '/calcular_impacto_item',
                method:   'POST',
                params: {
                    idproyecto: Ext.getCmp('combo-proyecto').valueModels[0].data.idproyecto,
                    iditem :    id_item
                },
                success: function(response, opts) {
                    // Obtenemos la respuesta del servidor
                    var obj       = Ext.decode(response.responseText);
                    var iatras    = obj.atras;
                    var iadelante = obj.adelante;
                    var itotal    = obj.total;
                    var icmpl     = obj.cmpl;
                    
                    // valores de la prioridad del item
                    var patras    = obj.patras;
                    var padelante = obj.padelante;
                    var ptotal    = obj.ptotal;
                    var prio     = obj.prio;
                    
                    var url       = obj.url;
                    var html =  '<div class="item"><h1>CALCULO DE IMPACTO</h1>' +
                                    '<br/><b>IMPACTO HACIA ADELANTE: </b>' + iadelante + '<br/>' +
                                    '<b>IMPACTO HACIA ATRAS: </b>' + iatras + '<br/>' +
                                    '<b>COMPLEJIDAD DEL ITEM: </b>' + icmpl + '<br/>' +
                                    '<br/><b>IMPACTO TOTAL: </b>' + itotal + '<br/>' +
                                    '<br/><b>PRIORIDAD HACIA ADELANTE: </b>' + padelante + '<br/>' +
                                    '<b>PRIORIDAD HACIA ATRAS: </b>' + patras + '<br/>' +
                                    '<b>PRIORIDAD DEL ITEM: </b>' + prio + '<br/>' +
                                    '<br/><b>PRIORIDAD TOTAL: </b>' + ptotal + '<br/>' +
                                    '<a href="' + url + '" target="_newtab"><i>ver grafico</i></a>' +
                                '</div>';
                    // Mostramos los resultados en la interfaz
                    var win = Ext.create('Ext.window.Window',{
                        layout: 'fit',
                        //title: 'Calculo',
                        items: [Ext.create('Ext.panel.Panel',{
                            height: '260',
                            width:  '430',
                            frame:  false,
                            border: false,
                            html:   html
                        })],
                        buttons: [{
                            xtype: 'button',
                            text:  'Aceptar',
                            handler: function(){
                                win.close();
                            }
                        }]
                    }).show();
                }
            });
        }
    },
    form_ver_relaciones_handler : function(){
        var records = this.grid.getSelectionModel().getSelection();
        if(records == null || records.length == 0){
            Ext.Msg.alert('ERROR','Debe seleccionar un item para ver sus relaciones');
        }
        else if(records[0].data.estado != 'ACTIVO'){
               Ext.Msg.alert('ERROR','No se puede ver las relaciones porque el item no esta ACTIVO');
        }
        else{
            var id_item  = records[0].data.id;
            // Creamos el panel para ver relaciones un item
            var panel = Ext.create('aps.verRelacionesItemPanel');
            panel.items.getAt(0).setValue(id_item);
            panel.llenar_grid();
            // Agregamos el panel a una ventana
            var win = Ext.create('Ext.Window',{
                title:     'DATOS',
                height:    '70%',
                width:     '80%',
                modal:     true,
                frame:     false,
                border:    false,
                resizable: false,
                items:     [panel]
            });
            win.show();
        }
    }
});

